iT邦幫忙

2026 iThome 鐵人賽

DAY 19
0
Build on Google AI

30 天用 Google ADK 打造你的「全自動 AI 虛擬團隊」系列 第 19

Day 19 | 視覺化呈現:在 Web 戰情室渲染精美的分鏡表格

  • 分享至 

  • xImage
  •  

大家好!歡迎來到「Build on Google AI」工程挑戰的第 19 天。

(我知道各位在等 Action Confirmations,但昨天我們的 PM 抱怨 JSON 太難看懂了,所以我們今天必須先解決 UI/UX 的問題!安全煞車機制確定順延至明天!)

前兩天,我們透過 response_schema 和 Self-Correction 打造了完美的自動化 JSON 產線。對於後端工程師來說,拿到強型別的 Pydantic 物件就可以下班了。但如果這個 Agent 是要交付給非技術人員(如企劃、PM、導演)使用的,我們就必須在「資料層」之上,再鋪一層「展示層 (Presentation Layer)」。

Google ADK 除了強大的 CLI 外,內建的 adk web 提供了一個極佳的展示舞台。今天,我們來教 Agent 如何將生硬的資料,轉化為戰情室裡的精美表格。

第一步:啟用 ADK 的 Web 戰情室
還記得我們在 Day 14 提過的 ADK Web 介面嗎?只要在專案目錄下執行:

adk web ./my_agent_project --port 8000

ADK 就會在本地啟動一個開發者儀表板。這個儀表板的聊天介面不僅能顯示文字,還原生支援解析 Markdown 與基礎 HTML 標籤。我們就是利用這個特性來做視覺化渲染。

第二步:撰寫「資料渲染器 (Data Renderer)」
我們不需要為了呈現表格去寫複雜的 React 或 Vue 前端程式碼。我們可以寫一個 Python 函式,專門攔截昨天產出的 VideoStoryboard 物件,並將其動態轉換為精美的 Markdown 表格。

from pydantic import BaseModel
# 假設這是我們昨天定義好的 VideoStoryboard (包含總時長與 scenes 陣列)
from models import VideoStoryboard 

def render_storyboard_to_markdown(storyboard: VideoStoryboard) -> str:
    """將強型別的 Pydantic 分鏡表,渲染為 ADK Web 支援的 Markdown 表格"""
    
    # 1. 建立標題與摘要區塊
    md_output = f"## 🎬 影片企劃書:{storyboard.video_title}\n\n"
    md_output += f"> **預計發布平台:** `{storyboard.target_platform}` | **總時長:** ⏱️ `{storyboard.total_duration_seconds} 秒`\n\n"
    
    # 2. 建立 Markdown 表格的 Header
    md_output += "| 鏡頭 | 時長 | 🎥 運鏡指示 | 👁️ 視覺畫面 (Visuals) | 🗣️ 旁白 (Voiceover) |\n"
    md_output += "| :---: | :---: | :--- | :--- | :--- |\n"
    
    # 3. 迭代 Pydantic 物件,動態生成表格列
    for scene in storyboard.scenes:
        # 將可能含有換行符號的字串進行替換,確保 Markdown 表格不破版
        visuals = scene.visual_description.replace('\n', '<br>')
        voice = scene.voiceover.replace('\n', '<br>')
        camera = scene.camera_movement
        
        md_output += (
            f"| **#{scene.scene_number}** "
            f"| `{scene.duration_seconds}s` "
            f"| {camera} "
            f"| {visuals} "
            f"| {voice} |\n"
        )
        
    return md_output

第三步:在 Workflow 中串接展示層
在 ADK 中,我們可以在 Agent 完成任務並通過驗證後,呼叫這個渲染器,然後將這段 Markdown 格式的字串作為最終回應丟給 Web UI。

# 模擬工作流 (Workflow) 的最後一步
def execute_video_planning(user_prompt: str):
    # 1. 呼叫昨天的自我修正工具,取得絕對正確的 Pydantic 物件
    storyboard_obj = generate_with_self_correction(user_prompt)
    
    # 2. 轉換為視覺化 Markdown
    visual_output = render_storyboard_to_markdown(storyboard_obj)
    
    # 3. 將視覺化結果回傳給 ADK Web UI 進行渲染
    return visual_output

戰情室視覺化成果!
現在,當 PM 在 localhost:8000 的 ADK 網頁介面上輸入:「幫我發想一支 15 秒的 ADK 宣傳短片」。

幾秒鐘後,他們不再會看到大坨的 { "scenes": [...] },而是會看到一個排版精美、重點高亮、帶有 Emoji 的時序表格。PM 可以一眼掃過每個分鏡的秒數是否合理,旁白是否生動。這才是真正具備「可用性 (Usability)」的企業級 AI 應用!

https://ithelp.ithome.com.tw/upload/images/20260920/20121643enFtxgA3A3.png

https://ithelp.ithome.com.tw/upload/images/20260920/20121643Gg8yWMewOO.png

小結
「資料結構化保證了系統的下限,而視覺化呈現決定了產品的上限。」 今天我們利用 ADK Web 介面的渲染能力,將複雜的巢狀結構無縫轉換為對人類極度友善的戰情室儀表板。


上一篇
Day 18 | 複雜工具鏈:讓 RD Agent 自動驗證 JSON 格式並自我修正
下一篇
Day 20 | Telegram 突圍:串接 Webhook 讓 RD 將草稿推播到手機
系列文
30 天用 Google ADK 打造你的「全自動 AI 虛擬團隊」20
圖片
  熱門推薦
圖片
{{ item.channelVendor }} | {{ item.webinarstarted }} |
{{ formatDate(item.duration) }}
直播中

尚未有邦友留言

立即登入留言